04. 无用代码

什么是无用代码?

无用代码是程序中不再具有任何意义的额外代码。比如,在编写一个解决方案时,你沿着一个逻辑分支写下去,发现最终行不通。或者你出于调试的目的添加了额外代码,但这段代码并不是解决方案的一部分。无用代码虽然是程序的一部分,但不影响程序实现。

它可能拖慢程序。这些代码虽然不会使用,但仍然会在 CPU 上执行,并且可能涉及内存读写操作。

还有两个问题也与无用代码相关,它们有时候也被看作无用代码—— 冗余代码 执行不到的代码

冗余代码

顾名思义,冗余代码就是多次重复的不必要代码。请看例子:

//冗余代码案例
int x = 6;
if (x > 5) {
   return true;
}
else {
   return false;
}

本质而言,先说 x > 5 然后返回 True 这部分是冗余的。你可以删除 if 语句:

return x > 5;

这是另一个例子

    if (x < 5) {
           x = x + 1;
    }
    else if (x >= 5 && x < 10) {
        x = x + 2;
    }

检查 x >= 5 毫无必要。第一个 if 语句已经证明了 x 和 5 的大小。

但是,发现冗余代码并不容易。它可能是额外的变量声明,或者上面例子中这种额外的逻辑语句。

执行不到的代码

执行不到的代码,是指永远不会执行的代码。这些代码可能对代码运行速度影响不大,但仍会占用内存空间,导致内存管理效率降低。

下面是一个简单的例子:

unsigned int x;

... 

if (x >= 0) {
   do_something ..
}
else {
  do_something ..
}

未分配的整数始终为零或正数,因此 else 语句永远都不会执行。else 语句里的代码是不可执行的。

在本课最后,当你看到 Andy 的代码时,注意是否有无用代码或冗余代码。你可能会发现好几处。

在本课的下一部分,你会看到一个将两个矩阵相加的程序。你需要执行代码,查看程序运行速度。但程序中包含无用代码。你需要删除无用代码,然后检查程序速度有无提升。

dead code

标出正确的陈述。

SOLUTION:
  • 删除无用代码、冗余代码或执行不到的代码后,能提升效率。